Рандом - це деякі випадкові події, які відбуваються в грі або в програмі, у них немає запрограмованого часу або порядку активації, тобто їх поява передбачити просто неможливо. Випадкові числа - це числа, які з'являються випадково за певним алгоритмом. Поглянемо на реалізацію в Python
import random
number = random.randrange(0,5) # проміжок чисел від 0 до 5, проте 5 НЕ ВКЛЮЧЕНА
print(number)
Модулем числа називають відстанню між 2 точками. В іграх це може бути відстань між ворогами, вашим персонажем і ворогами, будь-яка відстань на карті між 2 об'єктами
marioCoordinates = -50
print(marioCoordinates)
print(abs(marioCoordinates))
from random import choice, random
from turtle import *
from freegames import vector
def value():
"Randomly generate value between (-5, -3) or (3, 5)."
return (3 + random() * 2) * choice([1, -1])
# початкові координати появи м'яча
ball = vector(0, 0)
# м'яч має рандомний напрямок, який генерується з функції value
aim = vector(value(), value())
state = {1: 0, 2: 0}
def move(player, change):
"Move player position by change."
state[player] += change
def rectangle(x, y, width, height):
"Draw rectangle at (x, y) with given width and height."
up()
goto(x, y)
down()
begin_fill()
for count in range(2):
forward(width)
left(90)
forward(height)
left(90)
end_fill()
def draw():
"Draw game and move pong ball."
clear()
rectangle(-200, state[1], 10, 50)
rectangle(190, state[2], 10, 50)
ball.move(aim)
x = ball.x
y = ball.y
up()
goto(x, y)
# розмір м'яча
dot(10)
update()
# границі
if y < -200 or y > 200:
aim.y = -aim.y
if x < -185:
low = state[1]
high = state[1] + 50
if low <= y <= high:
aim.x = -aim.x
else:
return
if x > 185:
low = state[2]
high = state[2] + 50
if low <= y <= high:
aim.x = -aim.x
else:
return
# швидкість руху м'яча
ontimer(draw, 100)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
# клавіші управління
onkey(lambda: move(1, 20), 'w')
onkey(lambda: move(1, -20), 's')
onkey(lambda: move(2, 20), 'i')
onkey(lambda: move(2, -20), 'k')
draw()
done()
from turtle import *
from freegames import square, vector
# перший гравець
# початкова точка
p1xy = vector(-100, 0)
# напрямок
p1aim = vector(4, 0)
p1body = set()
# другий гравець
# початкова точка
p2xy = vector(100, 0)
# напрямок
p2aim = vector(-4, 0)
p2body = set()
# чи ми знаходимся в межах карти
def inside(head):
"Return True if head inside screen."
return -200 < head.x < 200 and -200 < head.y < 200
def draw():
"Advance players and draw game."
# рух гравця 1
p1xy.move(p1aim)
p1head = p1xy.copy()
# рух гравця 2
p2xy.move(p2aim)
p2head = p2xy.copy()
# перевірка чи гравець 1 врізався в гравця 2
if not inside(p1head) or p1head in p2body:
print('Player blue wins!')
return
# перевірка чи гравець 2 врізався в гравця 1
if not inside(p2head) or p2head in p1body:
print('Player red wins!')
return
# збільшення тіла гравця 1
p1body.add(p1head)
# збільшення тіла гравця 2
p2body.add(p2head)
# вигляд обох гравців, цифра 3 означає розмір, а колір можна міняти
square(p1xy.x, p1xy.y, 3, 'red')
square(p2xy.x, p2xy.y, 3, 'blue')
update()
# швидкість руху гравців
ontimer(draw, 50)
setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: p1aim.rotate(90), 'a')
onkey(lambda: p1aim.rotate(-90), 'd')
onkey(lambda: p2aim.rotate(90), 'j')
onkey(lambda: p2aim.rotate(-90), 'l')
draw()
done()